# 创建时间:2023/5/21 1:59
# 创建人:天霄
# 计划 :SenjoTwintail
# 文件 :MyFont.py
# 基于 Python 3.8.2
# ========================================
# 字体相关
# ========================================
import pygame
from pygame import freetype
from Api import uiApi

fontDefault = freetype.Font(uiApi.getPathFont('MFShangHei'), 25)
'''默认，大段文字使用的字体'''
font1 = freetype.Font(uiApi.getPathFont('font1'), 25)
'''较圆润的字体，支持汉字不太多'''
fontB = freetype.Font(uiApi.getPathFont('MFLiHei'), 25)
'''适用于大标题，粗宽字体'''
fontE = freetype.Font(uiApi.getPathFont('ERASDEMI'), 25)
'''仅英文半角字符'''


def textOutline(font: freetype.Font, text, lineColor, thin, lineAlpha=255, fgcolor=None, bgcolor=None,
                style=freetype.STYLE_DEFAULT, rotation=0, size=0, alpha=255):
    """描边文字

    :param font: 字体对象
    :param text: 文本
    :param lineColor: 描边颜色
    :param thin: 描边粗细
    :param lineAlpha: 描边透明度
    :param fgcolor: 文字颜色
    :param bgcolor: 文字背景色
    :param style: 文字风格
    :param rotation: 旋转角度
    :param size: 文字大小
    :param alpha: 文字透明度
    :return:
    """
    txt = font.render(text, fgcolor, bgcolor, style, rotation, size)[0]
    txt.set_alpha(alpha)
    txtline = font.render(text, lineColor, style=style, rotation=rotation, size=size)[0]
    txtline.set_alpha(lineAlpha)

    result = pygame.Surface((txt.get_width() + thin * 2, txt.get_height() + thin * 2), pygame.SRCALPHA)
    result.fill((0, 0, 0, 0))
    for i in (-1, 0, 1):
        for j in (-1, 0, 1):
            for d in range(thin):
                if i == 0 and j == 0:
                    continue
                result.blit(txtline, (thin + i * d, thin + j * d))
    result.blit(txt, (thin, thin))
    return result

